docker、k8s常用命令速查及k8s restful api接口 发表于 2018-04-27 | 阅读次数: 本文字数: 3.7k | 阅读时长 ≈ 3 分钟 ## 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283docker容器所依赖的六种namespace级别的资源隔离技术:1.UTS(UNIX Time-sharing system) 允许创建独立的hostname/domian_name namespace,作为独立的节点2.IPC(Inter Process Communication) 创建隔离的进程间通信方式,实现包括信号量、消息队列、管道、共享内存等资源的namespace隔离3.PID(Process ID) 允许树的子叶节点namespace创建自己专属的pid区间,pid对同级节点无效,仅父级namespace节点可见。(在子节点的pid,会在父节点映射为另一个pid标志, 因此在父节点的角度,每个子节点的进程拥有两个pid号)4.mount 挂载点namespace,各个namespace默认的mount挂载只在本空间内生效,不影响其他namespace,也可使用share共享挂载的方式互相影响, 或者slave从属挂 载的方式,实现主影响从。5.network 每个net ns拥有独立的网络资源(包括网络设备,IPv4/IPv6协议栈,防火墙,/proc/net、/sys/class/net目录等)6.user 每个user ns拥有独立的id、属性、key、根目录,组织结构等 docker: - docker ps -a - docker build -t xxx . #根据Dockerfile生成image - docker images - docker exec -it {ID\NAME} /bin/bash | /bin/sh - docker run -it {ID\NAME} -p -v - docker start {ID\NAME} - docker stop {ID\NAME} - docker rm {ID\NAME} - docker rmi {ID\NAME} - docker save coredns/coredns:1.0.0 | gzip > coredns.tar.gz #将已有的img打包 - docker load -i IMAGE #docker载入本地image打包文件 - docker stats {ID\NAME} #查看容器资源占用情况,不填查看全部 - docker cp - docker commit -p -m 'xxx' 1a889d5bbf99 xxx #将容器打标签提交为img,-p选项意思是打包时暂停容器,不会退出 - docker push xxx #push到容器仓库 k8s: - kubectl get pods -o wide - kubectl get pod xxx -o yaml #获取yaml配置文件 - kubectl get nodes -o wide - kubectl set image deployment xxx xxx=image_url #更改部署镜像 - kubectl describe pod mysql-deploy-766bd7dbcb-7nxvw #查看pod的创建运行记录 - kubectl scale deploy/kube-dns --replicas=3 #修改deploy的副本数 - kubectl create -f xxx.yaml #创建资源 - kubectl delete deploy mysql-deploy #删除资源 - kubectl get svc -o wide - kubectl get ep SVC_NAME #查看svc对应绑定的pod - kubectl get rs - kubectl get deploy/DEPLOY-NAME - kubectl get all #获取所有类型资源 - kubectl get componentstatuses #获取k8s各组件健康状态,简写为kubectl get cs - kubectl describe deploy/DEPLOY-NAME - kubectl status rollout deploy/DEPLOY-NAME - kubectl label nodes 171 disktype=ssd #添加标签 - kubectl label nodes 171 disktype- #删除标签 - kubectl label nodes 171 disktype=hdd --overwrite #修改标签 - kubectl logs POD_NAME #查看pod的日志,排错用 - kubectl get nodes -o json | jq '.items[] | .spec' #查看每个node的CIDR分配 - kubectl delete pod NAME --grace-period=0 --force #强制删除资源,在1.3版本去掉--force选项 - kubectl replace -f xxx.yaml #更改定义资源的yaml配置文件 - kubectl get secret -n kube-system | grep dashboard #查找secret - kubectl describe secret -n kube-system kubernetes-dashboard-token-ld92d #查看该secret的令牌 - kubectl scale --replicas=3 deployment/xxxx #横向扩展deploy的rs数量 - kubectl cordon NODENAME #将node设置为检修状态,不再向此node调度新的pod - kubectl drain NODENAME #将node设置为(排水)不可用状态,并且驱逐其上的pod转移至其他正常node上。这一步会进行两个步骤:1.将node设为cordon状态2.驱逐node上的pod - kubectl drain node2 --delete-local-data --force --ignore-daemonsets #忽略ds,否则存在ds的话无法正常执行 - kubectl uncordon NODENAME #取消检修状态、排水状态 - kubectl proxy --address=0.0.0.0 --port=8001 --accept-hosts=^.* & #kubectl监听端口代理apiserver的服务,允许调用客户端免去认证步骤 - kubectl patch deployment my-nginx --patch '{"spec": {"template": {"metadata": {"annotations": {"update-time": "2018-04-11 12:15" }}}}}' #更新configmap之后挂载configmap 的pod中的环境变量不会自动更新,可以通过更新一下deployment.spec.template的注解内容来触发pod的滚动更新。**k8s restful api**#### GET方法## labelSelector# 获取标签{app: pimsystemdev}的podhttp://192.168.9.27:8001/api/v1/namespaces/default/pods?labelSelector=app%3Dpimsystemdev# 动态获取标签{app: pimsystemdev}的podhttp://192.168.9.27:8001/api/v1/namespaces/default/pods?watch&labelSelector=app%3Dpimsystemdev## fieldSelector# 根据level 1字段获取信息http://192.168.9.27:8001/api/v1/namespaces/default/pods?fieldSelector=metadata.name%3Dykstaskdev-657c7f56fc-7vnd4 赏一瓶快乐回宅水吧~ 打赏 微信支付 支付宝 本文作者: 丨ywq丨 本文链接: https://blog.wqyin.cn/2018/04/27/docker、k8s常用命令速查及k8s restful api接口.html 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处! -------------本文结束感谢您的阅读-------------